<?php

	/******* Desarrollado Fabián Bejarano *******/
	/* Exporta las OI que hayan salido en el día para cargarlas en Faccode */
	/* 30sep2009 */
	
	require_once "funciones.php";
	session_start();
    $soporte=$_SESSION['caweb']['soporte'];
    
	$sucursal = $_SESSION['caweb']['sucursal'] ;
	$usuario = $_SESSION['caweb']['username'] ;
	$_SESSION['caweb']['mensaje_expo_oi'] = "" ;
	$mensaje = "" ;
	$fechaconsulta = $_POST[fechaexportar];
	$adddate = date("Y-m-d") ;
	$adddatetime = date("Y-m-d H:i:s") ;
	//$expofile = "/tmp/oi_expo_".$sucursal."_".$fechaconsulta.".txt" ;
	//$expofile = "c:/tmp/oi_expo_".$sucursal."_".$fechaconsulta.".txt" ;
	$expofile = "/tmp/oi_expo_".$sucursal.".txt" ;


	// conexión con la BD
	$conexion = con_caweb();

	// elimina registros de la sucursal
	$sql = "DELETE FROM exportar_oi WHERE sucursalcreo='$sucursal'" ;
	$result = mysql_query($sql, $conexion) 
		or die("Problemas eliminando OI anteriores - ".mysql_error());


	/******* OI GENERADAS POR LA SUCURSAL *******/


	//consulta detalles de las SOI de la fecha
	$sql = "SELECT c2.transaccion tran_soi, c2.numero numsoi, c2.numeroref1 oi, 
			if( d.interno = '', d.item, d.interno ) AS interno,
			d.item, if( ISNULL( i.descripcion ) , 
			(SELECT t.descripcionsub FROM taxonomia t WHERE t.codigotaxonomia = d.item), 
			i.descripcion ) descripcion, s.serial, s.fechacompra, s.board, 
			s.disco, s.memoria, s.video, s.red, s.fax, s.opticos,
			s.almacenamiento, s.otros, d.cantidad, d.precio
			FROM cabeceras c2
			INNER JOIN detalles d ON c2.transaccion = d.transaccion
			LEFT JOIN seriales s ON d.interno = s.interno
			LEFT JOIN items i ON d.item = i.codigoitem
			WHERE c2.documento = 'SOI'
			AND c2.sucursal = '$sucursal'
			AND LEFT( c2.fechacreo, 10 ) = '$fechaconsulta'" ;

	$resultdetalle = mysql_query($sql, $conexion) 
		or die("Problemas en la consulta de los detalles SOI - ".mysql_error());

	$mensaje .= "--- Total de detalles generadas por la sucursal ".mysql_num_rows($resultdetalle)." ---<br>" ;

	// Busca las OI e ingresa los detalles a la tabla
	while ($rowdetalle = mysql_fetch_array($resultdetalle)) {

		// se incluye el tipo de pedido				
		$sql = "SELECT c.* , m.name, m.ciudad ciudadcli, p.tipo tipoped, p.ciudad ciudadentrega
				FROM cabeceras c
				INNER JOIN clientes m ON c.terceroref = m.nit
				INNER JOIN cabeceras_ped p ON c.numeroref = p.pedido
				WHERE c.numero = $rowdetalle[oi]
				AND c.documento = 'OI'
				AND p.documento = 'PED'";


		$resultcabecera = mysql_query($sql, $conexion) 
			or die("Problemas en la consulta cabecera OI - ".mysql_error());

		//Si se encuentra la cabecera
		if (mysql_num_rows($resultcabecera) == 1) {
			$rowcabecera = mysql_fetch_array($resultcabecera) ;
			
			//estado de la oi
			$estadooi = iif($rowcabecera['estado'] == 'V', 'V', 'G');
			//se incluye el tipo de pedido
			$tipooi = 	iif($rowcabecera['tipoped'] == 'Venta', 'VEN',
						iif($rowcabecera['tipoped'] == 'Donacion', 'DON', 'ALQ'));
			//en Faccode la OI es PCD si la factura otra sucursal
			$tipooi = iif($rowcabecera['sucursalfactura'] == $sucursal, $tipooi, 'PCD') ;
			//el precio es cero si quien factura es otra sucursal
			$precio = iif($rowcabecera['sucursalfactura'] == $sucursal, $rowdetalle['precio'], 0) ;
			//se maneja cantidades si es diferente a un equipo
			$tipo = substr($rowdetalle['item'], 0, 1) ;
			$cantidades = iif($tipo == 'C' or $tipo == 'I' or $tipo == 'M' or $tipo == 'O', 'FALSO', 'VERDADERO') ;
			//solo coloca facturable si el precio es mayor a cero
			//$facturar = iif($precio > 0, 'VERDADERO', 'FALSO') ;
			//JFBL 23dic09 se modifica para que todos los EQU, excepto MON por defecto sean facturables
			$facturar = iif($tipo == 'C' or $tipo == 'I' or $tipo == 'O', 'VERDADERO', iif($precio > 0, 'VERDADERO', 'FALSO')) ;
			//se carga la información de los soportes de los pedidos
			$contrato1 = "".iif($rowcabecera[soporteinombre]!="", $rowcabecera[soporteinombre],"") ;
			$contrato1 .= iif($rowcabecera[soporteinumero]!="", '-'.$rowcabecera[soporteinumero],"") ;
			$contrato1 .= iif($rowcabecera[soporteifecha]!="", '-'.$rowcabecera[soporteifecha],"") ;
			$contrato2 = "".iif($rowcabecera[soportelnombre]!="", $rowcabecera[soportelnombre],"") ;
			$contrato2 .= iif($rowcabecera[soportelnumero]!="", '-'.$rowcabecera[soportelnumero],"") ;
			$contrato2 .= iif($rowcabecera[soportelfecha]!="", '-'.$rowcabecera[soportelfecha],"") ;
			$contrato = iif($contrato1 != "" and $contrato2 != "", $contrato1." / ".$contrato2, $contrato1.$contrato2) ;
			
			//si la ciudad de entrega es undef busca en el pedido
			//$ciudadcli = iif($rowcabecera[ciudad] == 'undef', $rowcabecera[ciudadentrega], $rowcabecera[ciudad]) ;
			$ciudadentrega = $rowcabecera[ciudadentrega] ;
			//si sigue siendo undef coloca la sucursal
			//$ciudadentrega = iif($ciudadentrega == 'undef', $rowdetalle[sucursal], $ciudadentrega) ;

			//Inserta el detalle
			$sql = "INSERT INTO exportar_oi VALUES ( $rowcabecera[numero], '$estadooi', '$fechaconsulta', $rowcabecera[numeroref], 
					'$rowcabecera[terceroref]', '$rowcabecera[name]', '$rowcabecera[ciudadcli]', '$rowcabecera[direccion]', 
					'$ciudadentrega', '$rowcabecera[contacto]', '$contrato', '$rowcabecera[observacion]', 
					'$rowcabecera[sucursalfactura]', '$tipooi', '$sucursal', '$rowdetalle[item]', 
					'$rowdetalle[descripcion]', '$rowdetalle[interno]', '$rowdetalle[serial]', '$rowdetalle[fechacompra]', 
					'$rowdetalle[memoria]', '$rowdetalle[disco]', '$rowdetalle[video]', '$rowdetalle[red]', '$rowdetalle[fax]', 
					'$rowdetalle[opticos]', '$rowdetalle[almacenamiento]', '$rowdetalle[otros]', $precio, 
					'$fechaconsulta', '$facturar', '$cantidades', $rowdetalle[cantidad], 
					'$usuario', '$adddatetime', '$sucursal')" ;

			$result1 = mysql_query($sql, $conexion)
				or die("Problemas al crear lote de exportacion - ".mysql_error())."<br>" ;
			//echo $sql."<br>";
		}
		else
		{
			$mensaje .= "No se encontro cabecera OI ".$rowcabecera['numero']."<br>" ;
		}
	}
	//$mensaje .= " Se exportaron las OI creadas por la sucursal <br>" ;



	/******* OI GENERADAS POR OTRAS SUCURSALES *******/


	//consulta detalles de las SOI de la fecha creadas por otra sucursal
	$sql = "SELECT c2.transaccion tran_soi, c2.numero numsoi, c2.numeroref1 oi, 
			if( d.interno = '', d.item, d.interno ) AS interno, c2.sucursal,
			d.item, if( ISNULL( i.descripcion ) , 
			(SELECT t.descripcionsub FROM taxonomia t WHERE t.codigotaxonomia = d.item), 
			i.descripcion ) descripcion, s.serial, s.fechacompra, s.board, 
			s.disco, s.memoria, s.video, s.red, s.fax, s.opticos,
			s.almacenamiento, s.otros, d.cantidad, d.precio
			FROM cabeceras c2
			INNER JOIN detalles d ON c2.transaccion = d.transaccion
			LEFT JOIN seriales s ON d.interno = s.interno
			LEFT JOIN items i ON d.item = i.codigoitem
			WHERE c2.documento = 'SOI'
			AND c2.sucursalfactura = '$sucursal'
			AND c2.sucursal != '$sucursal'
			AND LEFT( c2.fechacreo, 10 ) = '$fechaconsulta'" ;

	$resultdetalle = mysql_query($sql, $conexion) 
		or die("Problemas en la consulta de los detalles SOI - ".mysql_error());

	$mensaje .= "--- Total de detalles generadas por otras sucursales ".mysql_num_rows($resultdetalle)." ---<br>" ;

	// Busca las OI e ingresa los detalles a la tabla
	while ($rowdetalle = mysql_fetch_array($resultdetalle)) {

		$sql = "SELECT c.* , m.name, m.ciudad ciudadcli
				FROM cabeceras c
				INNER JOIN clientes m ON c.terceroref = m.nit
				WHERE c.numero = $rowdetalle[oi]
				AND c.documento = 'OI'"; // AND c.estado = 'V'" ;

		$resultcabecera = mysql_query($sql, $conexion) 
			or die("Problemas en la consulta cabecera OI - ".mysql_error());

		//Si se encuentra la cabecera
		if (mysql_num_rows($resultcabecera) == 1) {
			$rowcabecera = mysql_fetch_array($resultcabecera) ;
			
			//estado de la oi
			$estadooi = iif($rowcabecera['estado'] == 'V', 'V', 'G');
			//en Faccode estas OI son de ALQ
			$tipooi = 'ALQ' ;
			//el precio se deja igual
			$precio = $rowdetalle['precio'] ;
			//se maneja cantidades si es diferente a un equipo
			$tipo = substr($rowdetalle['item'], 0, 1) ;
			$cantidades = iif($tipo == 'C' or $tipo == 'I' or $tipo == 'M' or $tipo == 'O', 'FALSO', 'VERDADERO') ;
			//solo coloca facturable si el precio es mayor a cero
			//$facturar = iif($precio > 0, 'VERDADERO', 'FALSO') ;
			//JFBL 23dic09 se modifica para que todos los EQU, excepto MON por defecto sean facturables
			$facturar = iif($tipo == 'C' or $tipo == 'I' or $tipo == 'O', 'VERDADERO', iif($precio > 0, 'VERDADERO', 'FALSO')) ;
			//se carga la información de los soportes de los pedidos
			$contrato1 = "".iif($rowcabecera[soporteinombre]!="", $rowcabecera[soporteinombre],"") ;
			$contrato1 .= iif($rowcabecera[soporteinumero]!="", '-'.$rowcabecera[soporteinumero],"") ;
			$contrato1 .= iif($rowcabecera[soporteifecha]!="", '-'.$rowcabecera[soporteifecha],"") ;
			$contrato2 = "".iif($rowcabecera[soportelnombre]!="", $rowcabecera[soportelnombre],"") ;
			$contrato2 .= iif($rowcabecera[soportelnumero]!="", '-'.$rowcabecera[soportelnumero],"") ;
			$contrato2 .= iif($rowcabecera[soportelfecha]!="", '-'.$rowcabecera[soportelfecha],"") ;
			$contrato = iif($contrato1 != "" and $contrato2 != "", $contrato1." / ".$contrato2, $contrato1.$contrato2) ;

			//si la ciudad de entrega es undef busca en el pedido
			//$ciudadentrega = iif($rowcabecera[ciudad] == 'undef', $rowcabecera[ciudadentrega], $rowcabecera[ciudad]) ;
			$ciudadentrega = $rowcabecera[ciudadentrega] ;
			//si sigue siendo undef coloca la sucursal
			//$ciudadentrega = iif($ciudadentrega == 'undef', $rowdetalle[sucursal], $ciudadentrega) ;

			//Inserta el detalle
			$sql = "INSERT INTO exportar_oi VALUES ( $rowcabecera[numero], '$estadooi', '$fechaconsulta', $rowcabecera[numeroref], 
					'$rowcabecera[terceroref]', '$rowcabecera[name]', '$rowcabecera[ciudadcli]', '$rowcabecera[direccion]', 
					'$ciudadentrega', '$rowcabecera[contacto]', '$contrato', '$rowcabecera[observacion]', 
					'$rowcabecera[sucursalfactura]', '$tipooi', '$rowdetalle[sucursal]', '$rowdetalle[item]', 
					'$rowdetalle[descripcion]', '$rowdetalle[interno]', '$rowdetalle[serial]', '$rowdetalle[fechacompra]', 
					'$rowdetalle[memoria]', '$rowdetalle[disco]', '$rowdetalle[video]', '$rowdetalle[red]', '$rowdetalle[fax]', 
					'$rowdetalle[opticos]', '$rowdetalle[almacenamiento]', '$rowdetalle[otros]', $precio, 
					'$fechaconsulta', '$facturar', '$cantidades', $rowdetalle[cantidad], 
					'$usuario', '$adddatetime', '$sucursal')" ;

			$result1 = mysql_query($sql, $conexion)
				or die("Problemas al crear lote de exportacion - ".mysql_error())."<br>" ;
		}
		else
		{
			$mensaje .= "No se encontro cabecera OI ".$rowcabecera['numero']."<br>" ;
		}
	}
	//$mensaje .= " Se exportaron las OI creadas por la sucursal <br>" ;



	/******* EXPORTACIÓN DE LAS OI OBTENIDAS *******/

	// Si existe elimina el archivo del servidor
	if ( file_exists($expofile) ) {
		unlink($expofile) ;
	}
	// Exporta a un archivo en el servidor
	$sql = "SELECT * FROM exportar_oi WHERE sucursalcreo = '".$sucursal."' 
			INTO OUTFILE '".$expofile."' FIELDS TERMINATED BY '|'" ;
	$resultexpo = mysql_query($sql, $conexion) 
		or die("Problemas al exportar el archivo Solucionando - ".mysql_error()) ;

	$mensaje .= " Se finalizó el proceso de exportación <br>" ;

	//cierra la conexion
	mysql_close($conexion);

	$_SESSION['caweb']['mensaje_expo_oi'] = $mensaje ;
	//echo $mensaje;

	// Exportación
	header( "Content-Type: application/octet-stream" ) ;
	header( "Content-Disposition: attachment; filename=".$expofile."" ) ; 
	$fp = fopen("$expofile", "r");
	fpassthru($fp);

	

	// sintaxis basada en el IIF(condicion, vr verdadero, vr falso)
	function iif($condition,$val_if_true,$val_if_false=""){
		if ($condition) 
			return $val_if_true;
		else 
			return $val_if_false;

	}
?>
